package com.ruoyi.project.setsystem.rolepower.service;

import com.ruoyi.project.setsystem.rolepower.domain.RolePower;
import com.ruoyi.project.system.role.domain.Role;
import com.ruoyi.project.system.user.domain.UserRole;

import java.util.List;
import java.util.Set;

/**
 * @author 大帅比
 * @date 2020-09-20 11:51
 * @desc 百战程序员 http://www.itbaizhan.com
 */
public interface IRolePowerService {
    List<RolePower> All(RolePower rolePower);

    Set<String> selectRoleKeys(Long userId);

    /*** 根据用户ID查询角色*/
    List<RolePower> selectRolesByUserId(Long userId);

    /*** 查询所有角色*/
    List<RolePower> selectRoleAll();

    /*** 通过角色ID查询角色*/
    RolePower selectRoleById(Long roleId);

    /*** 通过角色ID删除角色*/
    boolean deleteRoleById(Long roleId);

    /*** 批量删除角色用户信息*/
    int deleteRoleByIds(String ids) throws Exception;

    /*** 新增保存角色信息*/
    int insertRole(RolePower rolePower);

    /*** 修改保存角色信息*/
    int updateRole(RolePower rolePower);



    /*** 校验角色名称是否唯一*/
    String checkRoleNameUnique(RolePower rolePower);

    /*** 校验角色权限是否唯一*/
    String checkRoleKeyUnique(RolePower rolePower);

    /*** 校验角色是否允许操作*/
    void checkRoleAllowed(RolePower rolePower);

    /*** 通过角色ID查询角色使用数量*/
    int countUserRoleByRoleId(Long roleId);

    /*** 角色状态修改*/
    int changeStatus(RolePower rolePower);

    /*** 取消授权用户角色*/
    int deleteAuthUser(UserRole userRole);

    /*** 批量取消授权用户角色*/
    int deleteAuthUsers(Long roleId, String userIds);

    /*** 批量选择授权用户角色*/
    int insertAuthUsers(Long roleId, String userIds);
}
